The ability to closely track the value of financial instrument baskets throughout a trading day as large volumes of events, such as trades and quotes, are constantly occurring is a daunting task. Every trade made on a financial instrument which is part of the portfolio of financial instruments underlying a financial instrument basket will potentially cause a change in that basket's value. The inventors herein believe that conventional techniques used to compute basket values have been unable to keep up with the high volume of events affecting basket values, thereby leading to inaccuracy for financial instrument basket values relative to the current state of the market because, with conventional techniques, the currently computed basket value will not be reflective of current market conditions, but rather market conditions as they existed anywhere from milliseconds to several seconds in the past.
As noted above, financial instrument baskets may represent standard indexes, ETFs, mutual funds, personal portfolios, etc.
An index represents the performance of a group of companies, wherein the group can be decided by various criteria such as market capitalization (e.g., the S&P 500), industry (e.g., the Dow Jones Industrial Average (DJIA)), etc.
A mutual fund is a professionally-managed form of collective investment wherein the buyer pays the fund owner a certain amount of money and in exchange receives shares of the fund.
ETFs are very similar to mutual funds with an important difference being that ETFs can be traded continuously throughout the trading day on an exchange, just like stocks. Therefore, the prices of ETFs fluctuate not only according to the changes in their underlying portfolios, but also due to changes in market supply and demand for the ETFs' shares themselves. Thus, ETFs provide the trading dynamics of stocks as well as the diversity of mutual funds. Additionally, ETFs typically track a well-established market index, trying to replicate the returns of the index.
Personal portfolios are groupings of financial instruments that are defined by an individual for his/her personal investment goals.
A financial instrument basket is defined by its set of underlying financial instruments. The basket definition also specifies a weight for each of the financial instruments within the basket. For example, consider a hypothetical basket denoted by B. Basket B contains M financial instruments with symbols Ci, wherein i=1, 2, . . . , M. Further, the weights of each financial instrument i in the basket is denoted by wi, wherein i=1, 2, . . . , M. Associated with a basket is a measure of its monetary value known as its net asset value (NAV). If one assumes that the value at the current instant of each financial instrument i within basket B is Ti, wherein i=1, 2, . . . , M, then the NAV of basket B can be computed as:
                    NAV        =                              1            d                    ⁢                                    ∑                              i                =                1                            M                        ⁢                                          w                i                            ⁢                              T                i                                                                        (        1        )            wherein d is a divisor that is associated with the basket and discussed in greater detail hereinafter. Thus, equation (1) specifies that a basket's NAV is the weighted sum of the worth of the financial instruments within the baskets, wherein the divisor acts as a normalizing factor.
The value of T represents a price for the financial instrument's shares. The price can be expressed as the last sale/trade price (last), the best offer to buy price (bid), the best offer to sell price (ask), or specific offer prices to buy or sell (limit orders).
The value of w can be defined differently for each basket. For example, with capitalization-weighted indexes (such as the S&P 500), the weight of the financial instrument can be defined as the number of outstanding shares of the financial instrument multiplied by a “free-float” factor, wherein the free-float factor is a number between 0 and 1 that adjusts for the fact that certain shares of the financial instrument are not publicly available for trading. With an equal-weighted index (such as the DJIA), the weight of a financial instrument is set to 1. With ETFs and personal portfolios, the weight of a financial instrument can be set equal to a specified number which reflects the fact that owning many shares for each of the basket's financial instruments amounts to owning one share of that ETF or personal portfolio. Thus, in order to own one share of basket B, one would have to purchase w1 shares of financial instrument C1, w2 shares of financial instrument C2, and so on up to wM shares of financial instrument CM.
The value of d can also be defined differently for each basket. For an index, the divisor can be set to the current index divisor, which can be either the number of financial instruments in the index (e.g., 500 for the S&P 500) or some other specified value. For ETFs, the divisor can change during the trading day (as the divisor can also do with respect to indexes).
As indicated above, whenever there is a change in worth for one of a basket's underlying financial instruments, then the NAV for that basket should be calculated in accordance with formula (1). However, financial market data messages from exchanges stream into a platform such as a ticker plant at very high rates. For example, the options price reporting authority (OPRA) expects that its message rate in January 2008 will be approximately 800,000 messages/second. Each of these messages may potentially trigger multiple NAV recalculations. Moreover, because the same financial instrument may be a member of several baskets, the inventors herein estimate that, in order to track basket NAV values for all financial market data messages, the number of NAV calculations that will need to be performed every second will be at least on the order of 10 million NAV calculations/second. The inventors herein believe that conventional solutions are unable to keep up with such high update rates due to the serial nature of the conventional solutions, which constrain it to perform only one update at a time (including other tasks that a system may need to perform unrelated to basket calculations).
This shortcoming is problematic because it is highly desirable for financial traders to be able to calculate the basket NAVs extremely fast. An example will illustrate this desirability. As explained above, ETFs are baskets which can be traded like regular stocks on an exchange. The portfolio for an ETF is defined at the beginning of the trading day and remains fixed throughout the trading day barring rare events. Shares of ETFs can be created throughout the trading day by a creation process which works as follows. A buyer gives the owner of a fund the specified portfolio of financial instruments that make up the ETF and a cash payment in an amount equal to the dividend payments on those financial instruments (and possibly a transaction fee). The fund then issues shares of the ETF to the buyer. Shares of ETFs can also be redeemed for the underlying financial instruments in a similar manner: the investor gives the fund owner shares of the ETF (and possibly some cash as a transaction fee), and in return the investor receives the portfolio of financial instruments that make up the ETF and cash equal to the dividend payments on those financial instruments.
During the trading day, the price of the shares of the ETF fluctuates according to supply and demand, and the ETF's NAV changes according to the supply and demand of the financial instruments in the ETF's portfolio. It may well happen that, during the trading day, the trading price of the ETF deviates from its NAV. If the price of the ETF is higher than the NAV, then the ETF is said to be trading “at a premium”. If the price of the ETF is lower than the NAV, then the ETF is said to be trading “at a discount”. If a financial trader detects a discrepancy between the ETF share price and the ETF NAV, then he/she can exploit that discrepancy to make a profit by way of arbitrage.
In one scenario, assume that the ETF share price, denoted by TETF, is higher than the ETF's NAV. In this case, a trader can execute the following steps:                Assemble a basket by purchasing the shares of the financial instruments in the ETF's portfolio at a total cost approximately equal to the NAV;        Create an ETF share by exchanging the assembled basket with the fund owner; and        Sell the ETF on the exchange at a price approximately equal to TETF.If the difference between TETF and the NAV is large enough to offset the transaction costs and other cash payments, then the trader can realize a profit by these actions. Moreover, this profit is realized by riskless arbitrage (assuming these steps could be performed instantaneously).        
In another scenario, assume that the ETF share price, denoted by TETF, is lower than the ETF's NAV. In this case, a trader can purchase an ETF share, redeem it for the shares of the financial instruments in the portfolio, and sell those financial instrument shares on the exchange. Once again, if the difference between TETF and the NAV is large enough to offset the transaction costs and other cash payments, then the trader can realize a profit at virtually no risk.
The crucial element in profiting from such riskless arbitrages for ETFs is detecting the difference between the ETF's share price and the ETF's NAV. The first trader to detect such discrepancies will stand to benefit the most, and the latency in NAV computation becomes important—the computation of the NAV should be performed as quickly as possible to beat competitors in the race toward detecting profit opportunities.
Independently of the ETF scenarios discussed above, another utility of basket NAV calculation is that the NAV provides a measure of how the basket's portfolio is faring. A steadily increasing NAV indicates that investing in more such baskets may be profitable. On the other hand, a decreasing NAV indicates that it may be desirable to sell the basket portfolio in order to avoid loss. This strategy is similar to ones that would be employed when trading in the shares of an individual financial instrument with the basket providing a benefit by mitigating risk through diversification across a portfolio of financial instruments (e.g., if the basket as a whole has an increasing NAV, then investing in that basket will be desirable independently of how any individual financial instrument in the basket is performing).
In an effort to satisfy a need in the art for high volume low latency basket value computations, the inventors herein disclose a technique for computing basket values for a set of baskets based on the data within a high speed data stream as that data streams through a processor.
According to one aspect of a preferred embodiment of the present invention, the inventors disclose a technique for computing basket values wherein a coprocessor is used to perform the basket calculations. By offloading the computational burden of the basket calculations to a coprocessor, the main processor for a system can be freed to perform different tasks. The coprocessor preferably hardware accelerates the basket calculations using reconfigurable logic, such as Field Programmable Gate Arrays (FPGAs). In doing so, a preferred embodiment preferably harnesses the underlying hardware-accelerated technology disclosed in the following patents and patent applications: U.S. Pat. No. 6,711,558 entitled “Associated Database Scanning and Information Retrieval”, U.S. Pat. No. 7,139,743 entitled “Associative Database Scanning and Information Retrieval using FPGA Devices”, U.S. Patent Application Publication 2006/0294059 entitled “Intelligent Data Storage and Processing Using FPGA Devices”, U.S. Patent Application Publication 2007/0067108 entitled “Method and Apparatus for Performing Biosequence Similarity Searching”, U.S. Patent Application Publication 2008/0086274 entitled “Method and Apparatus for Protein Sequence Alignment Using FPGA Devices”, U.S. Patent Application Publication 2007/0130140 entitled “Method and Device for High Performance Regular Expression Pattern Matching”, U.S. Patent Application Publication 2007/0260602 entitled “Method and Apparatus for Approximate Pattern Matching”, U.S. Patent Application Publication 2007/0174841 entitled “Firmware Socket Module for FPGA-Based Pipeline Processing”, U.S. Patent Application Publication 2007/0237327 entitled “Method and System for High Throughput Blockwise Independent Encryption/Decryption”, U.S. Patent Application Publication 2007/0294157 entitled “Method and System for High Speed Options Pricing”, and U.S. Patent Application Publication 2008/0243675entitled “High Speed Processing of Financial Information Using FPGA Devices”, the entire disclosures of each of which are incorporated herein by reference.
According to another aspect of a preferred embodiment of the present invention, the inventors disclose that the different tasks involved in such basket calculations can be relegated to different modules within a pipeline. For example, one pipeline module can be configured to determine which baskets are impacted by a current data event within the stream. Another pipeline module can be configured to receive information about the impacted baskets and compute data indicative of a new basket value for each of those impacted baskets. By pipelining these modules together, the two modules can work on different messages and/or baskets at the same time in parallel with each other.
In a preferred embodiment, this pipeline comprises a basket association lookup module in communication with a basket value updating module. The basket association lookup module is configured to determine which baskets are impacted by each data message, while the basket value updating module is configured to compute at least one new value for each impacted basket based on the information within the data messages (for example, in an embodiment operating on financial market data, this information can be the financial instrument price information within the financial market data messages).
The basket value updating module preferably employs a delta calculation approach to the computation of the updated basket values, as explained in greater detail below. With such an approach, the number of arithmetic operations needed to compute each basket value will remain the same regardless of how many elements such as financial instruments are members of a given basket. Furthermore, the basket value updating module may optionally be configured to compute a plurality of different types of basket values for the same basket simultaneously using parallel computation logic.
The basket association lookup module preferably accesses a basket set table which stores at least a portion of the data needed by the basket value updating module for the basket value calculations. In a preferred embodiment pertaining to financial information, this data can be indirectly indexed in the table by financial instrument such that, as a new message pertaining to a financial instrument is received, the appropriate data needed for the basket calculations can be retrieved. To provide the indirection, a second table is employed which indexes pointers into the basket set table by financial instrument.
Furthermore, in an embodiment wherein the pipeline comprises a firmware pipeline deployed on a coprocessor such as a reconfigurable logic device, the design of these modules can be tailored to the hardware capabilities of the coprocessor, thereby providing a level of synergy that streamlines the basket calculations so that the data streams can be processed at line speeds while a main processor is still free to perform other tasks.
The inventors also note that the pipeline can employ a price event trigger module downstream from the basket value updating module. The price event trigger module can be configured to determine whether any of the updated basket values meet a client-specified trigger condition. Any updated basket values which meet the client-specified trigger condition can then be forwarded to the attention of the pertinent client (e.g., a particular trader, a particular application, etc.). By doing so, clients can take advantage of the low latency nature of the basket calculation pipeline to learn of trading opportunities which may be available.
Furthermore, the pipeline can employ an event generator module downstream from the price event trigger module, wherein the role of the event generator module is to generate a message event for delivery to the client in response to a trigger being set off by the price event trigger module. This message event preferably contains the updated basket value.
Further still, to limit the volume of financial market data messages processed by the basket association lookup module (and its downstream modules in the pipeline), the pipeline can employ a message qualifier filter module upstream from the basket association lookup module. Preferably, the message qualifier filter module is configured to drop messages from the financial market data message stream which are not pertinent to the basket calculations.
A pipeline such as the one described herein can be used in an embodiment of the invention to identify arbitrage conditions (such as the ETF arbitrage scenario discussed above) as they may arise in connection with financial instrument baskets and the current state of the markets. By detecting these arbitrage conditions quickly via the low latency basket calculation pipeline, a trader is enabled to make trades on one or more exchanges which take advantage of the detected arbitrage condition.
These and other features and advantages of the present invention will be apparent to those having ordinary skill in the art upon review of the following description and drawings.